import { Entity } from '../models'

export interface IFiledConfig {
  key?: string
  label?: string
}

export interface IJson<V = any> {
  [X: string]: V
}

export type ClassConstructor<T> = {
  new (...args: any[]): T
}

/**
 * # 标准字典
 * @author Hamm
 */
export interface IDictionary {
  /**
   * # 字典的值
   */
  key: number | string | boolean

  /**
   * # 字典的显示标题
   */
  label: string

  /**
   * # 是否被禁用
   */
  disabled?: boolean
}

/**
 * # 枚举Key的类型
 */
export type EnumKey = string | number | boolean

/**
 * # 标准树结构
 * @author Hamm
 */
export interface ITree extends Entity {
  /**
   * # 树节点名称
   */
  name: string

  /**
   * # 树的子节点
   * ---
   * ### 💡 为了成功的数据转换,请注意自行```@Type```
   */
  children: this[]

  /**
   * # 父节点ID
   */
  parentId?: number
}
